<!DOCTYPE html>
<script>
    /* 
     * replace 详解
    str.replace(reg,function(ar0,ar1,ar2){
        // 第一个参数是总正则表达式匹配到的结果
        // 第二个参数是第一个子正则()匹配到的结果
        // 第三个参数为第二个子正则()匹配到的结果
        // ……
        // 倒数第二个参数是总正则表达式在原字符串种匹配到的索引位置
        // 原来的字符串str
        return ar1+ar2.replace(/\d{3}/g,function(rs){
            return ","+rs;
        });
    })
    */
    var code = `
        设备型号：XBY-FJ-NN114FS-14
        资产编码：YST20002002
        资产属性：养生堂集团所有
        服务电话：95077
    `;
    let arr = [];
    let reg = /(.+：)([^\s+]*)/g;
    code.replace(reg, (...args) => {
        // console.log(args);
        /* 
     * args
     ["    设备型号：XBY-FJ-NN114FS-14", "    设备型号：", "XBY-FJ-NN114FS-14", 1, "↵    设备型号：XBY-FJ-NN114FS-14↵    资产编码：YST20002002↵    资产属性：养生堂集团所有↵    服务电话：95077↵"]
    */
        arr.push(args[2]);
        return arr;
    });
    console.log(arr);

    let list = code.replace(/(?:.+：)([^\s+]*)/g, '$1,');
    console.log(list.split(',')[0]);
    
    let list1 = code.replace(/(.+：)([^\s+]*)/g, '$2,');
    console.log(list1.split(',')[0]);

    /* ?: ?=和?! 匹配不捕获 */
    let m1 = "你是chinese人".replace(/你是(?=chinese)/, "我是"); // 匹配"你是chinese人"中的“你是”后面=“chinese”的“你是”，将其替换为我是，结果为：我是chinese人
    console.log("exp1(?=exp2)：查找exp1后面等于exp2的exp1", m1);
    let m2 = "你是chinese人".replace(/我是(?=chinese)/, "你是"); // 匹配"你是chinese人"中的“我是”后面=“chinese”的“我是”，字符串中chinese前边是你是，所以不能匹配
    console.log("?=", m2);
    let m = "你是chinese人".replace(/(?<=chinese)人/, " people"); // 匹配"你是chinese人"中的“人”前面=“chinese”的“人”，将其替换为 people，结果为：你是chinese people
    console.log("?<=", m);


    let n2 = "你是中国人".replace(/你是(?!chinese)/, "我肯定是"); // 匹配"你是chinese人"中"你是"后面非chinese的你是，将其替换为我肯定是，结果为：我肯定是中国人
    console.log("exp1(?!exp2) 查找exp1后面不是exp2的exp1", n2);
    let n1 = "你是chinese中国人".replace(/你是(?!chinese)/, "，我肯定是"); // 匹配"你是chinese人"中"你是"后面非chinese的你是，字符串中你是后边是chinese，所以不能匹配
    console.log("?!", n1);
    let n = "你是chinese中国人".replace(/(?<!chinese)人/, "，我是"); // 匹配"你是chinese人"中"人"前面非chinese的中国，将其替换为的，结果为：你是chinese中国，我是
    console.log("?<!", n);


    let o = "说：“你是中国人”".replace(/(?:“)/g, (...args) => {
        console.log(args);
        return "“我确认"
    }); // 匹配"你是chinese人"中"人"前面非chinese的中国，将其替换为的，结果为：你是chinese中国，我是
    console.log("?:", o);

    var str="23209340928";
    // 传递六个参数，?:表示不需要捕获
    var str1=str.replace(reg=/^(\d{1,3})((?:\d{3})+)$/, function(ar0,ar1,ar2){
        // 第一个参数是总正则表达式匹配到的结果
        // 第二个参数是第一个子正则()匹配到的结果
        // 第三个参数为第二个子正则()匹配到的结果
        // ……
        // 倒数第二个参数是总正则表达式在原字符串种匹配到的索引位置
        // 原来的字符串str
        console.log(...arguments);
        return ar1+ar2.replace(/\d{3}/g,function(rs){
            return ","+rs;
        });
    });
    console.log(str1)
</script>
